/***
 * 此文件对axios进行二次封装,指定一些axios请求的参数(axios.create)
 */
import axios from 'axios'
//进度条包
//如果想修改其中的样式,可以直接改其.css的源码
import nProgress from 'nprogress'
//引入nprogress样式模块,才能生效
import 'nprogress/nprogress.css'
//引入仓库
import store from '@/store'

const instance = axios.create({
    //此设置在每个路径前加一个前缀
    baseURL:'/api',
    timeout:5000
})

//请求拦截器
//例如:可以设置滚动条;可以设置和接收请求头
//interceptors:拦截器
//request:请求
//use:使用
instance.interceptors.request.use((config) => {
    //通过上行请求的请求头，把用户临时身份带给服务器
     //请求头添加的属性名字不能瞎写，因为已经和后台人员商量好了
     //如果不叫做userTempid字段，服务器获取不到
     if(store.state.shopcart.userTempId){
         config.headers.userTempId = store.state.shopcart.userTempId
     }
    nProgress.start()
    return config
})

//响应拦截器
instance.interceptors.response.use((response) => {
    nProgress.done()
    return response.data
},(error) => {
    nProgress.done()
    //终止Promise链
    return Promise.reject(error)
})

export default instance